package com.mmy.controller.permissionmenu;

import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mmy.domain.permissionmenu.TConstRole;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.permissionmenu.impl.PermissionServiceImpl;

/**
 * 类的介绍：角色信息
 *
 * @author shangzl
 * @date 创建日期：2020-08-06
 * @version 1.0
 */
@Controller
public class PermissionController {

	@Autowired
	PermissionServiceImpl permissionServiceImpl;

	/**
	 * 函数功能说明： 跳转角色页面
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	 */

	@RequestMapping(value = "/permission")
	public String toPermission(HttpServletRequest request, String pageNumber, String pageSize,
			Model model) throws Exception {

		String strRoleName = request.getParameter("strRoleName");

		List<TConstRole> lstConstRole = permissionServiceImpl.toPermission(pageNumber, pageSize, strRoleName);

		HashMap<String, Integer> mapPage = permissionServiceImpl.mapPermission(pageNumber, pageSize, strRoleName);

		model.addAttribute("lstConstRole", lstConstRole);
		model.addAttribute("iPageNo", mapPage.get("iPageNo"));
		model.addAttribute("iTotalCount", mapPage.get("iTotalCount"));
		model.addAttribute("iMaxPage", mapPage.get("iMaxPage"));
		model.addAttribute("iPageSize", mapPage.get("iPageSize"));
		model.addAttribute("strRoleName", strRoleName);

		return "webbackground/permission-menu/Permission";

	}

	/**
	 * 函数功能说明： 跳转新建角色
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	 */
	@RequestMapping(value = "/createpermission")
	public String toCreatePermission() {
		return "webbackground/permission-menu/CreatePermission";
	}

	/**
	 * 函数功能说明： 新建角色
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	 * 
	 */

	@RequestMapping(value = "/savecreatepermission")
	public String createPermission(TConstRole tConstRole, HttpSession session) throws Exception {
		TSysUser tSysUser = (TSysUser) session.getAttribute("tSysUser");
		String strRoleName = tConstRole.getRoleName();

//		 判断角色名称是否已存在 
		if (permissionServiceImpl.countRoleByRoleName(strRoleName) > 0) {

			return "test";

		} else {
			permissionServiceImpl.createPermission(tConstRole, tSysUser);
			return "redirect:permission";
		}

	}

	/**
	 * 函数功能说明： 删除角色
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-21
	 */

	@PostMapping("/delpermission")
	@ResponseBody
	public String delPermission(String checkList) {

		permissionServiceImpl.delPermission(checkList);

		return "webbackground/permission-menu/Permission";
	}

	/**
	 * 函数功能说明： 跳转修改角色
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-16
	 */

	@RequestMapping(value = "/toupdatepermission")
	public String toUpdatePermission(Model model, HttpServletRequest request) throws Exception {
		int iRoleID = Integer.parseInt(request.getParameter("iRoleID"));
		try {
			TConstRole tConstRole = permissionServiceImpl.findByRoleID(iRoleID);
			model.addAttribute("tConstRole", tConstRole);
			return "webbackground/permission-menu/UpdatePermission";

		} catch (Exception e) {

		}
		return null;
	}

	/**
	 * 函数功能说明： 修改角色
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-16
	 */
	@RequestMapping(value = "/updatepermission")
	public String updatePermission(TConstRole tConstRole, HttpSession session) throws Exception {
		TSysUser tSysUser = (TSysUser) session.getAttribute("tSysUser");
		try {

			String strRoleName = tConstRole.getRoleName();

//			 判断角色名称是否已存在 
			if (permissionServiceImpl.countRoleByRoleName(strRoleName) > 0) {

				return "test";

			} else {

				permissionServiceImpl.updatePermission(tConstRole, tSysUser);
				return "redirect:permission";
			}

		} catch (Exception e) {

		}
		return null;
	}
// TODO delete
//	/**
//	 * 函数功能说明： 查询权限
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 jsp页面
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-20
//	 * 
//	 */
//
//	@RequestMapping(value = "/querypermission")
//	public String queryPermission(HttpServletRequest request, Model model, String pageNumber, String pageSize) {
//
//		String strRoleName = request.getParameter("RoleName");
////		调分页方法
//		Common common = new Common();
//		HashMap<String, Integer> mapPage = new HashMap<String, Integer>();
//		mapPage = common.getPage(pageNumber, pageSize, permissionServiceImpl.countRoleByRoleName(strRoleName));
//
//		List<TConstRole> lstConstRole = permissionServiceImpl.queryPermission(strRoleName, pageNumber, pageSize,
//				mapPage);
//
//		model.addAttribute("lstConstRole", lstConstRole);
//		request.setAttribute("strRoleName", strRoleName);
//		model.addAttribute("iPageNo", mapPage.get("iPageNo"));
//		model.addAttribute("iTotalCount", mapPage.get("iTotalCount"));
//		model.addAttribute("iMaxPage", mapPage.get("iMaxPage"));
//		model.addAttribute("iPageSize", mapPage.get("iPageSize"));
//
//		return "webbackground/permission-menu/Permission";
//
//	}

}
